package cn.sprouting.tool;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.util.RandomUtil;
import cn.sprouting.model.Fund;
import cn.sprouting.model.ListedCompany;

import java.util.ArrayList;
import java.util.List;

/**
 * @author ：LX
 * @ Date 创建时间： 2021/10/27. 1:39
 * 地点：长沙麓谷
 * 目的: 随机生成金融相关的
 * 备注说明：
 */
public class RandomFinancialTool {

    /**
     * 随机获取A股上市公司相关信息
     * 数据来源截至2021年9月28日，内容为真实的A股上市公司数据
     * @return
     */
    public static ListedCompany getListedCompany(){
        return getListedCompany(1).get(0);
    }

    /**
     * 随机获取A股上市公司相关信息
     * 数据来源截至2021年9月28日，内容为真实的A股上市公司数据
     * @param num 随机的数量
     * @return
     */
    public static List<ListedCompany> getListedCompany(Integer num){
        String fundTxt = ResourceUtil.readUtf8Str("shanghaiStockExchange.txt");
        String[] array = fundTxt.split("\r\n");

        List<ListedCompany> list = new ArrayList<>();
        for (String str : array){
            ArrayList<String> row = CollUtil.newArrayList(str.split(","));

            ListedCompany listedCompany = new ListedCompany(row.get(0), row.get(1), row.get(2), row.get(3), row.get(4));
            list.add(listedCompany);
        }

        if (num == null || num < 1){
            num = 1;
        }
        if (num > list.size()){
            num = list.size();
        }

        return RandomUtil.randomEleList(list, num);
    }

    /**
     * 随机获取基金
     * @return
     */
    public static Fund getFund(){
        return getFund(1).get(0);
    }

    /**
     * 随机获取基金
     * @param num 获取的数量
     * @return
     */
    public static List<Fund> getFund(Integer num){
        // 读取出基金
        String fundTxt = ResourceUtil.readUtf8Str("fundData.txt");
        String[] array = fundTxt.split("\r\n");

        List<Fund> list = new ArrayList<>();
        for (String str : array){
            ArrayList<String> row = CollUtil.newArrayList(str.split(","));

            Fund fund = new Fund(row.get(0), row.get(1));
            list.add(fund);
        }

        if (num == null || num < 1){
            num = 1;
        }
        if (num > list.size()){
            num = list.size();
        }

        return RandomUtil.randomEleList(list, num);
    }

}
